﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;

namespace DisplayBoardInfoClient
{
    /// <summary>
    /// Okno pozwalające na edycję pacjenta lub danej wizyty.
    /// </summary>
    public partial class EditWindow : Window
    {
        /// <summary>
        /// Pokój w którym zarejestrowana jest wizyta.
        /// </summary>
        private Room roomek;
        /// <summary>
        /// Obiekt edytowanej wizyty.
        /// </summary>
        private PatientVisit visitTemp;
        /// <summary>
        /// Tworzy nowe okno do edytowania.
        /// </summary>
        /// <param name="visit">wizyta do edycji</param>
        /// <param name="room">pokój w którym zarejestrowana jest wizyta</param>
        public EditWindow(PatientVisit visit, Room room)
        {
            InitializeComponent();
            hourBox.Text = visit.getHour();
            nameBox.Text = visit.Patient.Name;
            surnameBox.Text = visit.Patient.Surname;
            peselBox.Text = visit.Patient.PESEL;
            durationBox.Text = ""+visit.Duration.Minutes;
            roomek =room;
            visitTemp = visit;
        }
        /// <summary>
        /// Metoda zamykająca okno bez zatwierdzania zmian.
        /// </summary>
        /// <param name="sender">obiekt wysyłający zdarzenie</param>
        /// <param name="e">dodatkowe parametry wydarzenia</param>
        private void button2_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
        }
        /// <summary>
        /// Zatwierdzenie wprowadzonych zmian. Wysłanie odpowiednich komunikatów do serwera.
        /// </summary>
        /// <param name="sender">obiekt wysyłający zdarzenie</param>
        /// <param name="e">dodatkowe parametry zdarzenia.</param>
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            DateTime d=new DateTime(visitTemp.VisitTime.Year, visitTemp.VisitTime.Month, visitTemp.VisitTime.Day,
                Int32.Parse(hourBox.Text.Substring(0, 2)), Int32.Parse(hourBox.Text.Substring(3, 2)), 0, DateTimeKind.Local);
            if (!d.Equals(visitTemp.VisitTime) || Int32.Parse(durationBox.Text) != visitTemp.Duration.Minutes)
            {
                ServerClient.modifyVisit(new PatientVisit(new DateTime(visitTemp.VisitTime.Year, visitTemp.VisitTime.Month, visitTemp.VisitTime.Day,
                Int32.Parse(hourBox.Text.Substring(0, 2)), Int32.Parse(hourBox.Text.Substring(3, 2)), 0, DateTimeKind.Local),
                nameBox.Text, surnameBox.Text, peselBox.Text, Int32.Parse(durationBox.Text), PatientList.getPatient(peselBox.Text).ID, visitTemp.ID), roomek);
            }
            if (!peselBox.Text.Equals(visitTemp.Patient.PESEL) || !nameBox.Text.Equals(visitTemp.Patient.Name) || !surnameBox.Text.Equals(visitTemp.Patient.Surname))
            {
                ServerClient.modifyPatient(nameBox.Text, surnameBox.Text, peselBox.Text, visitTemp.Patient.ID);
                ServerClient.getPatientList();
            }
            this.Close();
        }
    }
}
